package com.eshop.service.impl.mongodb;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import com.eshop.dao.mongodb.ECartItemDao;
import com.eshop.frameworks.core.dao.DAO;
import com.eshop.frameworks.core.service.impl.AbstractService;
import com.eshop.model.mongodb.ECartItem;
import com.eshop.service.mongodb.ECartItemService;

@Service("ecartItemService")
public class ECartItemServiceImpl extends AbstractService<ECartItem, String> implements
		ECartItemService {

	@Autowired
	private ECartItemDao ecartItemDao;
	
	@Override
	public DAO<ECartItem, String> getDao() {
		return ecartItemDao;
	}

	@Override
	public ECartItem getMyItem(String goodsId,String userId) {
		return ecartItemDao.findOne(Criteria.where("goodsId").is(goodsId).and("userId").is(userId), ECartItem.class);
	}
	
	@Override
	public ECartItem getMyItem(String shopId,String goodsId,String userId) {
		return ecartItemDao.findOne(Criteria.where("goodsId").is(goodsId).and("userId").is(userId).and("shopId").is(shopId), ECartItem.class);
	}
	
	@Override
	public ECartItem getMyItem(ECartItem item) {
		return getMyItem(item.getShopId(),item.getGoodsId(),item.getUserId());
	}

	@Override
	public List<ECartItem> getItems(String userId) {
		List<ECartItem> ecartItems =  ecartItemDao.findList(Criteria.where("userId").is(userId), ECartItem.class);
		return ecartItems;
	}

	@Override
	public List<ECartItem> getSubItems(String userId, String shopId) {
		return ecartItemDao.findList(Criteria.where("userId").is(userId).and("shopId").is(shopId), ECartItem.class);
	}
	public void updateCount(String id,int count){
		update(new Query(Criteria.where("id").is(id)), new Update().set("goodsCount", count), ECartItem.class);
	}
	@Override
	public void addCount(String id) {
		updateCount(id,1);
	}
	@Override
	public void delCount(String id) {
		updateCount(id,-1);
	}
}
